Small shadow pagetable fixes.
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sun, 30 Oct 2005 15:40:05 +0000 (16:40 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Sun, 30 Oct 2005 15:40:05 +0000 (16:40 +0100)
Signed-off-by: Jun Nakajima <jun.nakajima@intel.com>
Signed-off-by: Xin B Li <xin.b.li@intel.com>
xen/arch/x86/shadow.c
xen/include/asm-x86/shadow.h

index fdd0c5aaf06c8c6a5901388ef0d004387d62b1c3..7ca116803b188ccdf4ac231adbfb10bf47da0e6f 100644 (file)
@@ -1381,7 +1381,8 @@ static int resync_all(struct domain *d, u32 stype)
             perfc_incrc(resync_l1);
             perfc_incr_histo(wpt_updates, changed, PT_UPDATES);
             perfc_incr_histo(l1_entries_checked, max_shadow - min_shadow + 1, PT_UPDATES);
-            if (unshadow_l1) {
+            if ( d->arch.ops->guest_paging_levels == PAGING_L4 &&
+                 unshadow_l1 ) {
                 pgentry_64_t l2e;
 
                 __shadow_get_l2e(entry->v, entry->va, &l2e);
index 0a8112c3d3cd0971bd3310bbdb2063790da705bb..9c2206ad05192242d84f8f78f0339fc702beab3a 100644 (file)
@@ -387,7 +387,7 @@ shadow_get_page_from_l1e(l1_pgentry_t l1e, struct domain *d)
     nl1e = l1e;
     l1e_remove_flags(nl1e, _PAGE_GLOBAL);
 
-    if ( unlikely(l1e_get_flags(l1e) & L1_DISALLOW_MASK) )
+    if ( unlikely(l1e_get_flags(nl1e) & L1_DISALLOW_MASK) )
         return 0;
 
     res = get_page_from_l1e(nl1e, d);